package com.yueshop.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;


/**
 *使用nacos作为配置中心
 *  1. 添加依赖  spring-cloud-starter-alibaba-nacos-config
 *  2.创建配置文件bootstrap.properties 添加 配置中心配置
 *      spring.application.name=yueshop-coupon
 *      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *  3.使用nacos 配置中心配置数据集yueshop-coupon.properties  应用名.properties
 *      将所有配置放入 其中  yml properties 等配置文件
 *  4. 动态更新配置
 *      @RefreshScope : 开启动态获取刷新配置
 *      @Value("${配置项名称}") : 获取配置
 *
 *  如果配置中心和当前应用的配置文件中都配置了相同的项,那么优先使用配置中心的配置.
 *
 *
 *命名空间: 配置隔离
 *       默认: 使用public 命名空间.  默认所有新配置都是public
 *       1.开发 测试 生产: 利用命名空间做环境隔离
 *       spring.cloud.nacos.config.namespace=c3a6872b-1896-4fec-aa85-ce67119c906e
 *       2.为每一个微服务尽心配置隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的 所有配置
 *
 *
 *  配置集:  所有的配置集合
 *
 *  配置集ID:  类似文件名
 *             Data ID: 类似于文件名
 *

 *  配置分组:  默认所有的配置集都属于:DEFAULT_GROUP
 *   双11活动   618活动  双12 活动
 *  本项目中: 每个微服务都创建自己的命名空间, 使用配置分组来区分环境  dev  test prod
 *
 *同时加载多配置集
 *   微服务任何配置信息,配置文件都可以放在配置中心中
 *   只需要在bootstrap.properties 说明加载哪些配置文件即可
 *   以前 Springboot 任何方法从配置中获取值 都可以正常使用  @Value  @ConfigurationProperties
 *   配置中心有的配置 优先使用配置中心
 *
 *   开发阶段 为了节约时间 先写在项目中  等项目上线再写再配置中心中
 */

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class YueshopCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(YueshopCouponApplication.class, args);
    }

}
